SublimeSocket0.8.0で出来るようになった事まとめ


概要

普通に開発に使う分には、いろんな機能が整った。

メモ程度に。



フィルタがJSONで追加可能

ss@defineFilter:

{

    "name": "unity",

    "patterns": [

        {

            "[(]([0-9].*?),.*:(.*)": {

                "runnable": {

                    "showLine": {

                        "line": "groups[1]",

                        "message": "groups[2]"

                    }

                }

            }

        }

    ]

}


みたいに書けるようになった。

後出しでどんなフィルタ内容にも対応可能。


リアクタの追加

SublimeTextの特定のイベントを監視、一定インターバルで指定APIを実行可能になった。


ss@setReactor:

{

    "target": "targetWebSocketClientIdentity",

    "event": "on_selection_modified",

    "selector": {

        "playRegions": {

            "view": "will be replace to specific view",

            "target": "targetWebSocketClientIdentity",

            "showatstatus":true

        }

    },

    "replacefromto": {

        "view": "view"

    },

    "interval": 100

}


イベントから予約済みAPIへのパラメータ代入を実装したけど、うーん名前がわかりにくい。

replacefromtoとか。これからリファクタリングする。replace記号でも定義するか? めんどうな、、


上記で、カーソルがどこかを選択(位置確定)すると、playRegions APIが実行される。


範囲系APIの追加

SublimeText上で表示される、エラーとか明示用のRegion(ハコ)に対応するAPI。

ハコ敷設時、特定の要素をセットできる。

要素は、上記のリアクタと組み合わせる形で発生させられる。


エラー検出からRegionをセット → Regionがある行をクリック → 

リアクタ発生 → Regionに入っている要素を取り出し、リアクタ内にセットされたAPIを実行


Unity用だと、「とりあえず要素をそのまま表示する」APIを実行している。


内容変更を逐次、WebSocketで外部に送る事も可能。


結果として

こんなかんじにエラー表示が出来るようになった

pcyt.png

ここまでで、ENSIMEができることの半分くらいが出来るようになったと思う。


あとは、稼働中プログラム値のリアルタイムオーバーレイとかも可能。 WebSocketついてるから、外部連携の自由度が良い。


UnityつかいつつScalaでの全力に向けて遊ぶ。



TODO

API一覧書く